import Vue from 'vue'
import Vuex from 'vuex'
import { auInfo } from '@/api/my.js'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    userInfo: '', // 用户信息
    isLogin: false // 是否登录
  },
  mutations: {
    // 设置用户信息
    setUserInfo (state, value) {
      state.userInfo = value
    },
    setIsLogin (state, value) {
      state.isLogin = value
    }
  },
  actions: {
    // 用于异步操作
    refreshUserInfo (store) {
      auInfo()
        .then(res => {
          console.log('res', res)
          store.commit('setUserInfo', res.data.data)
          // 修改登录状态
          store.commit('setIsLogin', true)
        })
        .catch(() => {})
    }
  },
  // 使用 getters，使用场景：依赖(state)一个或者多个值产生一个新的值 和计算属性非常相似
  getters: {
    gettersTate (state) {
      if (!state.isLogin) {
        return 0
      }
      return (fn, id) => {
        return state.userInfo[fn] && state.userInfo[fn].includes(+id)
      }
    },
    getQuestions (state) {
      if (!state.isLogin) {
        return 0
      }
      return (
        state.userInfo.correctQuestions.length +
        state.userInfo.errorQuestions.length
      )
    },
    getRate (state, getters) {
      return total => {
        return (getters.getQuestions / total) * 100
      }
    }
  },
  modules: {}
})
